package com.da.im.handler;

import com.da.im.ImServer;
import com.da.im.common.Command;
import com.da.im.common.WsResult;
import io.netty.channel.ChannelHandlerContext;
import lombok.extern.slf4j.Slf4j;

/**
 * @author da
 * @time 2023/12/20 上午 9:52
 * 处理连接
 */
@Slf4j
public class ConnectHandler {
    public static void execute(ChannelHandlerContext ctx, Command command) {
        String name = command.getName();
        //如果有说明连接之前已经建立好了,把原来的通道换成现在的新通道
        if (ImServer.USERS.containsKey(name)) {
            //关掉原来的
            ImServer.USERS.get(name).disconnect();
        }
        ImServer.USERS.put(name, ctx.channel());
        log.info("用户{}与服务端建立连接成功", name);
        ctx.channel().writeAndFlush(WsResult.success(name + "与服务端建立连接成功"));
        //通知所有的用户有新用户上线
        ImServer.USERS.values().forEach(channel -> {
            channel.writeAndFlush(WsResult.success(name + "上线了,当前在线的用户有:" + ImServer.USERS.keySet()));
        });
    }
}
